/*
 * @Description: file content
 * @Author: ZeT1an
 * @Date: 2022-01-16 20:09:18
 * @LastEditors: ZeT1an
 * @LastEditTime: 2022-01-16 20:25:13
 * @LastEditContent: 
 */
/**
 * 不管什么编程语言，在代码执行过程中，都是需要分配内存的，2种形式
 * 1.手动分配内存，如C, C++
 * 2.自动分配内存，如Java，JavaScript，Python
 */

/**
 * 内存管理的生命周期：
 * 1.分配申请需要的内存
 * 2.使用分配的内存（存放一些东西，如对象）
 * 3.不需要使用时，对其进行释放。
 */

/**
 * JS为变量分配内存的2中方式
 * 1.为基本数据类型分配内存，会在执行时，直接在栈空间进行分配。
 * 2.为复杂数据类型分配内存，会在堆内存中开辟一块空间，并且将这块空间的指针返回值变量引用
 */

/**
 * 垃圾回收器的英文名：Garbage Collection，简称GC
 */

/**
 * 常件的GC算法2个，并介绍
 * 1.引用计数
 * 	当有一个引用指向一个对象，对象引用数+1，当对象引用数为0时，该对象会被销毁
 * 	这个算法有一个很大的弊端，就是会产生循环引用
 * 2.标记清除
 * 	从根对象出发，找所有从根开始有引用的对象，对于那些没有引用的对象，就认为是不可用的对象
 * 	能够很好的解决循环引用的问题
 * 	JS引擎普遍使用的是标记清除算法，类似于V8会结合一些其它的算法，做更好的优化。
 */